Aggregation Strategy এবং Custom Aggregator তৈরি

Latest Technologies - অ্যাপাচি ক্যামেল (Apache  Camel) - Aggregation এবং Splitter Pattern | NCTB BOOK

Apache Camel-এ Aggregation Strategy হল একটি কনসেপ্ট যা একাধিক মেসেজকে একত্রিত করে একটি একক মেসেজ তৈরি করার জন্য ব্যবহৃত হয়। Aggregation Strategy নির্ধারণ করে কিভাবে এই একত্রিতকরণের প্রক্রিয়া হবে এবং একত্রিত হওয়া ডেটার ফলাফল কিভাবে দেখতে হবে।

Aggregation Strategy

Aggregation Strategy হল একটি ইন্টারফেস যা AggregationStrategy নামক ক্লাস থেকে বাস্তবায়িত হয়। এটি দুইটি মেসেজ (previous and current) গ্রহণ করে এবং নতুন মেসেজ তৈরি করে।

Custom Aggregator তৈরি করার ধাপ

১. Custom Aggregation Strategy ক্লাস তৈরি করুন

প্রথমে, একটি কাস্টম Aggregation Strategy ক্লাস তৈরি করুন যা AggregationStrategy ইন্টারফেসকে বাস্তবায়ন করে। নিচে একটি উদাহরণ দেওয়া হলো:

import org.apache.camel.Exchange;
import org.apache.camel.processor.aggregate.AggregationStrategy;

public class MyAggregationStrategy implements AggregationStrategy {
    @Override
    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
        if (oldExchange == null) {
            // প্রথম মেসেজ
            return newExchange;
        }
        
        // নতুন মেসেজের কনটেন্ট নেওয়া
        String oldBody = oldExchange.getIn().getBody(String.class);
        String newBody = newExchange.getIn().getBody(String.class);
        
        // একত্রিত মেসেজ তৈরি করা
        String combinedBody = oldBody + "," + newBody;
        
        // নতুন মেসেজ সেট করা
        oldExchange.getIn().setBody(combinedBody);
        return oldExchange;
    }
}

২. Custom Aggregator ব্যবহার করে Route তৈরি করুন

এখন আপনার কাস্টম Aggregation Strategy ব্যবহার করে একটি Camel রাউট তৈরি করুন:

import org.apache.camel.builder.RouteBuilder;

public class AggregationRoute extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("direct:start")
            .aggregate(constant(true), new MyAggregationStrategy())
            .completionSize(3) // তিনটি মেসেজ আসার পর একত্রিত হবে
            .to("log:aggregatedResult");
    }
}

সম্পূর্ণ উদাহরণ

import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.builder.RouteBuilder;

public class MainApp {
    public static void main(String[] args) throws Exception {
        CamelContext camelContext = new DefaultCamelContext();
        
        // কাস্টম Aggregation Strategy ব্যবহার করে Route যুক্ত করা
        camelContext.addRoutes(new AggregationRoute());
        
        // ক্যামেল কনটেক্সট শুরু করা
        camelContext.start();
        
        // মেসেজ পাঠানো
        camelContext.createProducerTemplate().sendBody("direct:start", "Message 1");
        camelContext.createProducerTemplate().sendBody("direct:start", "Message 2");
        camelContext.createProducerTemplate().sendBody("direct:start", "Message 3");
        
        // কিছু সময়ের জন্য ক্যামেল চালিয়ে রাখা
        Thread.sleep(5000);
        
        // ক্যামেল কনটেক্সট বন্ধ করা
        camelContext.stop();
    }
}

উপসংহার

Apache Camel-এ কাস্টম Aggregation Strategy তৈরি করা আপনাকে একাধিক মেসেজকে একত্রিত করে একটি নতুন ফলাফল তৈরি করতে সাহায্য করে। এই পদ্ধতিটি ডেটা সংগ্রহ, রিপোর্টিং এবং বিভিন্ন মেসেজ প্রসেসিংয়ের জন্য অত্যন্ত কার্যকরী। উপরোক্ত উদাহরণগুলি ব্যবহার করে আপনি সহজেই আপনার কাস্টম Aggregator তৈরি করতে পারেন।

Promotion